home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / MiscKit1.7.1 / MiscKitArchive.mbox / mbox / 000120_yackd@maine.et.byu.edu_Fri Feb 4 15:02 MST 1994.msg < prev    next >
Internet Message Format  |  1994-10-30  |  7KB

  1. Received: from yvax.byu.edu by maine.et.byu.edu; Fri, 4 Feb 1994 15:02:02 -0700
  2. Return-Path: <yackd@maine.et.byu.edu>
  3. Received: from DIRECTORY-DAEMON by yvax.byu.edu (PMDF V4.3-3 #4169)
  4.  id <01H8HPUIKNPC01AK3C@yvax.byu.edu>; Fri, 4 Feb 1994 15:03:48 MST
  5. Received: from alaska.et.byu.edu by yvax.byu.edu (PMDF V4.3-3 #4169)
  6.  id <01H8HPUFQ31S8Y59BV@yvax.byu.edu>; Fri, 4 Feb 1994 15:03:39 MST
  7. Received: from acs1.byu.edu by alaska.et.byu.edu; Fri, 4 Feb 1994 15:03:21 -0700
  8. Received: from DIRECTORY-DAEMON by yvax.byu.edu (PMDF V4.3-3 #4169)
  9.  id <01H8HPSG984001AK3C@yvax.byu.edu>; Fri, 4 Feb 1994 15:02:03 MST
  10. Received: from maine.et.byu.edu by yvax.byu.edu (PMDF V4.3-3 #4169)
  11.  id <01H8HPRIE3O08Y584W@yvax.byu.edu>; Fri, 4 Feb 1994 15:01:23 MST
  12. Received: by maine.et.byu.edu; Fri, 4 Feb 1994 14:58:40 -0700
  13. Date: Fri, 04 Feb 1994 14:58:40 -0700
  14. From: yackd@maine.et.byu.edu (Don Yacktman)
  15. Subject: Strings and other bad puns...
  16. To: misckit@byu.edu
  17. Message-Id: <9402042158.AA01621@maine.et.byu.edu>
  18. Content-Transfer-Encoding: 7BIT
  19. Status: RO
  20.  
  21.  
  22.  
  23. And now, for yet another long rambling discourse, which,
  24. if printed, would reach to the moon and back if you could
  25. find paper strong enough to hold up under the forces which
  26. would be applied on it if you tried to do that.  :-)
  27.  
  28. In the previous message, I say this:
  29.  
  30. > In the case of "file" objects
  31. > we need to decide what exactly we want and who will do it.
  32. > Any takers there?  (The one example sent to me is already
  33. > duplicated by a lot of what is in the MiscString class...)
  34.  
  35. This brings up a very interesting point.  The MiscString class
  36. is, frankly, huge.  All of what it does is useful in some
  37. setting; that's why it is there.  But since it's been built
  38. up in a very ad-hoc way, it's not as clean and "beautiful" as
  39. it could be.  Honestly, if I were starting now, knowing what
  40. I know now, I would have done some things quite differently.
  41.  
  42. Yeah, where this is leading is making heavy MiscString users
  43. nervous, right?  You don't want me changing the whole thing
  44. out from under you.  Well, I'm not suggesting that, exactly.
  45.  
  46. As many of you are aware, there is an organization, OPN, which
  47. is at the moment trying to come up with a general, free, spec
  48. for the bare minimum that a "string" class should implement.
  49. This is to be a fully specified Obj-C protocol.  Now, at the
  50. moment they are comparing various string class implementations
  51. and will be compiling them into a (hopefully) well-designed
  52. class, usin the best ideas from each.
  53.  
  54. One of the string classes they are evaluating is the MiscString.
  55. I _hope_ to high heaven that the protocol they come up with
  56. is much cleaner.  That said, I also fully intend to make sure
  57. that the MiscString is in compliance with whatever they come
  58. up with--it behooves us to do this.  What about the current
  59. set of methods?  Well, here's what I envision happening:
  60.  
  61. (1) A new core string class, which only implements the basic
  62.     string protocol as OPN defines it.
  63.  
  64. (2) Categories to implement any other protocols that OPN
  65.     comes up with as standard interfaces for "optional"
  66.     things that would be nice for a string class to do.
  67.  
  68. (3) A compatibility category for old MiscString methods.
  69.     Any method that is replaced by the new OPN names will
  70.     become part of the compatability category, which is a
  71.     set of cover methods for the new stuff.
  72.  
  73. (4) The MOString and other compatability stuff is left in
  74.     place as well.
  75.  
  76. It's possible to make a subclass of the core string to
  77. implement the other functionality, but I am in more favor
  78. of using categories there.  Since strings can be "understood"
  79. in specific ways, but that may change over time, I don't
  80. like having to take one string and -setStringValue: it a
  81. different string class when the semantics change; I prefer
  82. to just send the applicable message.  (Thus the MiscStringUNIX
  83. is a category and not a subclass, for example.)
  84.  
  85. Anyway, my idea is that we advance the design to make it better,
  86. but we don't break old code.  Now, for a few MiscKit versions
  87. after the change the compatibility methods will be in the
  88. default library.  In later releases, they will have to be
  89. explicitly added to the library via a config file.  To aid
  90. in switching over to the new methods, an optional -D cflag
  91. will be available to print messages to the console that
  92. will allow the user to make a list of "old" methods that were
  93. called and suggest a replacement...which may be used to feed
  94. a search-and-replace effort.  (I'd rather not make that an
  95. automatic thing...you need to make sure you only replace the
  96. pertinent method calls, not necessarily _every_ one...)
  97.  
  98. One other important thing to mention.  The test suite I am
  99. currently writing will be modified and turned into the test
  100. suite for validating the OPN protocol.  Until we know the
  101. protocol, we don't know _how_ much it will need to be
  102. changed, but I have given them permission to use the code
  103. (any, all, some, or none) as thy see fit.  Hopefully that
  104. test suite will be complete for the current MiscString by
  105. Monday...and it's already found several MiscString bugs
  106. for me.  Run it on the current version and you'll see a
  107. few I haven't yet had time to fix!  (These are not bugs
  108. that will ruin your app, for the most part, but are more
  109. on boundary conditions that normally don't occur.  The
  110. test suite is written to try and break every method by
  111. sending it bad arguments of all sorts in addition to the
  112. typical tests for proper function.)  This also means that
  113. the current MiscString.rtf should be cleaned up completely
  114. by Monday as well (I hope).
  115.  
  116. One quick question on the .rtf file:  it's now getting
  117. rather huge--140k isn't exactly small.  I don't want to
  118. break it up by protocol since it's nice to be able to
  119. look through the method descriptions of all methods sorted
  120. alphabetically, without having to know which category has
  121. a particular method in it.  Should I break it up into
  122. (1) the top level, and then (2) several method-description
  123. files like A-M and N-Z?  Or would you prefer I just do it
  124. as separate .rtf files for each of the categories?
  125.  
  126. Does this seem more or less along the right track?  As OPN
  127. protocols become available, I wish to use them in the MiscKit
  128. and be fully compliant to them.  That will make the MiscKit,
  129. as a free kit, a least common denominator of sorts.  Commercial
  130. kits should still exist...to go beyond what the MiscKit can
  131. provide.  (For some, tech support is enough to warrant such
  132. a purchase...)  Please note that I do _not_ consider the
  133. MiscKit to be in direct competition with the commercial kits
  134. but rather as something which encourages a certain higher
  135. quality level from such kits.
  136.  
  137. Anyway, beyond these wild ramblings and crazy ideas, what
  138. are your opinions?  Just because I see this as a good
  139. possible future direction doesn't mean anything other than
  140. that it is my opinion.  Where would you like to see it go?
  141. What will be the most useful for you in the future?
  142.  
  143. Respond privately or to the list as you see fit...
  144.  
  145. Later,
  146. -don
  147.  
  148.